package 前置知识_方法递归.其他应用_文件搜索;

// 目标: 掌握文件搜索的实现

import java.io.File;

public class Test {
    public static void main(String[] args) {
        // 需求: 从D盘中, 搜索" QQ.exe" 这个文件, 找到后直接输出其位置
        searchFile(new File("D:/"), "QQ.exe");
    }
    public static void searchFile(File dir, String fileName) {
        // 1. 先把非法的情况拦截
        if (dir == null || !dir.exists() || dir.isFile()) {
            return; //f代表无法搜索
        }
        // 2. dir不是null, 存在, 一定时目录对象
        // 获取当前目录下的全部一级文件对象
        File[] files = dir.listFiles();
        // 3. 判断当前目录下是否存在一级文件对象, 一级是否可以拿到一级文件对象
        if (files != null && files.length > 0) {
            // 4. 遍历全部一级文件对象
            for (File file : files) {
                // 5. 判断文件是否是文件, 还是文件夹
                if (file.isFile()) {
                    // 是文件, 判断这个文件是否是我们要找的
                    if (file.getName().contains(fileName)) {
                        System.out.println("找到了: " + file.getAbsolutePath() );
                    }
                } else {
                    // 是文件夹, 继续重复这个过程(递归)
                    searchFile(file, fileName);
                }
            }
        }
    }
}
